﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using System.Text;
using System.Windows.Forms;
//librerias especiales para la BD
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;

namespace CityGames
{
    public class CADFactura
    {
        static private string cadConexion = System.Configuration.ConfigurationManager.ConnectionStrings["CityGames.Properties.Settings.BDCityGamesConnectionString"].ConnectionString;

        /*************************************************Funciones Ruben ***********************************************/

        /// <summary>
        /// Funcion que crea una nueva factura
        /// </summary>        
        /// <param name="cantEntregada">
        /// La cantidad de dinero entregada</param>
        /// <param name="fecha">
        /// La fecha en la que se realiza la compra</param>
        /// <param name="dni">
        /// El dni del comprador</param>
        /// <returns>
        /// Un booleano que indica si se creado correctamente la factura
        /// </returns>
        public bool NuevaFactura(decimal cantEntregada, DateTime fecha, string dni)
        {
            bool resultado = false;

            SqlConnection conexion = null;
            SqlTransaction tr = null;
            SqlCommand comandoSql = null;
            string insert = "";
            SqlParameter param = new SqlParameter("@cantEntregada", cantEntregada);

            try
            {
                insert += "INSERT INTO Factura (CantEntregada, Fecha, DNISocio)";
                insert += "VALUES        ( @cantEntregada , '" + fecha + "', '" + dni + "')";

                conexion = new SqlConnection(cadConexion);
                conexion.Open();

                tr = conexion.BeginTransaction();

                comandoSql = new SqlCommand(insert, conexion);
                comandoSql.Parameters.Add(param);
                comandoSql.Transaction = tr;
                comandoSql.ExecuteNonQuery();

                tr.Commit();
                resultado = true;
            }
            catch (Exception ex)
            {
                tr.Rollback();
                throw ex;
            }
            finally
            {
                if (conexion != null)
                    conexion.Close();
            }

            return resultado;
        }


        /// <summary>
        /// Funcion que devuelve el numero de la ultima factura.
        /// </summary>       
        /// <returns>
        /// Un entero con el número de factura.
        /// </returns>
        public int NumeroUltimaFactura()
        {
            int resultado = 0;
            string select = "";
            SqlConnection conexion = null;

            try
            {
                select += "SELECT MAX(NumPedido) AS NumFactura FROM Factura";

                conexion = new SqlConnection(cadConexion);
                conexion.Open();

                SqlCommand comandoSql = new SqlCommand(select, conexion);
                SqlDataReader dr = comandoSql.ExecuteReader();

                if (dr.Read())
                    resultado = int.Parse(dr[0].ToString());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (conexion != null)
                    conexion.Close();
            }

            return resultado;
        }

        /*************************************************Fin Funciones Ruben ***********************************************/
    }
}
